Versi 1
| Field | Isi |
|---|---|
| Dokumen ID | VBS-TAX-003 |
| Deskripsi | Pencatatan setoran pajak terpisah dari SPT: daftar, buat, ubah, finalisasi, dan unlock setoran per jenis pajak |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Dokumentasi baseline dari dokumentasi fitur demo dan kode FE |
1. Ringkasan
a. In scope
- User melihat daftar setoran pajak yang tercatat sebagai invoice khusus setoran.
- User memfilter daftar berdasarkan periode tanggal, status draft/final, dan jenis pajak, lalu mengekspor ke Excel.
- User membuat setoran baru: memilih akun pembayaran, lalu menambah satu atau lebih baris tanggal bayar, jenis pajak, nominal, NTPN, dan kode billing.
- User menyimpan setoran sebagai draft atau final.
- User mengubah setoran draft, memfinalisasi, menghapus draft, membuka kembali final ke draft, dan memposting ulang.
b. Catatan
c. Kesimpulan
- [FE] -
- [BE] -
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | Sistem menampilkan daftar setoran pajak dengan kolom tanggal, nomor invoice, jenis pajak, nominal, dan status draft/final |
| FR-02 | User dapat memfilter daftar berdasarkan periode, status invoice, dan jenis pajak |
| FR-03 | User dapat mengekspor daftar setoran sesuai filter ke Excel |
| FR-04 | User dapat membuat setoran pajak dengan akun pembayaran dan satu atau lebih baris jenis pajak |
| FR-05 | User dapat menyimpan setoran sebagai draft atau final dengan konfirmasi pada simpan final |
| FR-06 | User dapat mengubah setoran draft melalui endpoint setoran pajak |
| FR-07 | User dapat memfinalisasi, menghapus draft, unlock final, dan sync posting ulang sesuai hak akses |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Melihat daftar setoran pajak |
| UC-02 | Memfilter dan mengekspor daftar setoran pajak |
| UC-03 | Membuat setoran pajak |
| UC-04 | Mengubah setoran pajak draft |
| UC-05 | Memfinalisasi, unlock, hapus, atau posting ulang setoran |
4. Use Case Scenario
UC-01 : Melihat daftar setoran pajak
| Aktor | User pajak / keuangan |
| Deskripsi | User melihat daftar setoran pajak brand aktif |
| Prekondisi | User sudah login dan memiliki akses menu Setoran Pajak |
| Alur utama | 1. User membuka menu Transaksi, Pajak, Setoran Pajak. 2. Sistem memuat daftar invoice setoran dengan infinite scroll. 3. Sistem menampilkan tanggal, nomor invoice, jenis pajak, nominal, dan status. |
| Alur negatif | - Jika daftar kosong, muncul empty state. - Jika gagal memuat, muncul notifikasi error. |
| Bisnis rule | - Daftar difilter ke transaksi setoran pajak melalui lawan_transaksi_id khusus dan daftar jenis pajak PPh/PPN/denda.- Tanpa hak lihat semua user, daftar dibatasi ke invoice buatan user sendiri. |
| Postkondisi | Daftar setoran pajak tampil |
| Trigger | User membuka halaman Setoran Pajak |
| Kode FR | FR-01 |
UC-02 : Memfilter dan mengekspor daftar setoran pajak
| Aktor | User pajak / keuangan |
| Deskripsi | User mempersempit daftar setoran dan mengunduh Excel |
| Prekondisi | User berada di halaman daftar Setoran Pajak |
| Alur utama | 1. User membuka filter. 2. User memilih periode tanggal, status invoice, dan/atau jenis pajak, atau mencari nomor invoice. 3. Sistem memuat ulang daftar. 4. User menekan export. 5. Sistem mengunduh file Excel sesuai filter. |
| Alur negatif | - Jika hasil kosong, daftar/export tidak berisi data. |
| Bisnis rule | - Opsi jenis pajak filter: PPh 21, PPh 22, PPh 23, PPh Final, SPTNP, PPN, PPh 25/29, Denda Pajak. - Status invoice memakai flag is_tercetak final/draft. |
| Postkondisi | Daftar terfilter tampil atau Excel terunduh |
| Trigger | User mengubah filter atau menekan export |
| Kode FR | FR-02 FR-03 |
UC-03 : Membuat setoran pajak
| Aktor | User pajak / keuangan |
| Deskripsi | User mencatat satu atau lebih baris setoran pajak |
| Prekondisi | User memiliki hak dasar #setoran-pajak; master rekening pembayaran tersedia |
| Alur utama | 1. User menekan Buat Invoice. 2. User memilih akun pembayaran. 3. User menambah baris: tanggal bayar, jenis pajak, nominal, NTPN opsional, kode billing opsional, dan keterangan opsional. 4. User memilih simpan draft atau final. 5. Untuk final, sistem menampilkan konfirmasi bahwa data tidak dapat diubah kembali. 6. Sistem menyimpan dan menampilkan notifikasi berhasil. |
| Alur negatif | - Jika form belum valid, muncul "Tolong lengkapi form dengan benar!". - Jika akun pembayaran kosong, muncul "Akun Pembayaran harus di isi". - Jika user membatalkan konfirmasi final, data tidak disimpan. |
| Bisnis rule | - Setiap baris memakai rekening_pembayaran_id dari akun pembayaran terpilih.- lawan_transaksi diisi nama jenis pajak; lawan_transaksi_id memakai UUID nol khusus setoran.- Draft dan final sama-sama memanggil pembuatan bulk setoran; bedanya flag is_tercetak. |
| Postkondisi | Satu atau lebih invoice setoran pajak tersimpan |
| Trigger | User menekan Buat Invoice |
| Kode FR | FR-04 FR-05 |
UC-04 : Mengubah setoran pajak draft
| Aktor | User pajak / keuangan |
| Deskripsi | User memperbaiki setoran yang masih draft |
| Prekondisi | Setoran berstatus draft dan user memiliki hak dasar |
| Alur utama | 1. User memilih Edit. 2. Sistem memuat detail dengan penanda setoran pajak. 3. User mengubah akun pembayaran atau baris setoran. 4. User menyimpan draft atau final. 5. Sistem memperbarui data dan menampilkan notifikasi berhasil. |
| Alur negatif | - Jika detail gagal dimuat, user dikembalikan ke daftar. - Jika validasi gagal, simpan dibatalkan. |
| Bisnis rule | - Update final/baris memakai endpoint khusus setoran pajak. - Update status saja dapat memakai update invoice umum. |
| Postkondisi | Setoran draft terbarui atau menjadi final |
| Trigger | User memilih Edit |
| Kode FR | FR-06 FR-05 |
UC-05 : Memfinalisasi, unlock, hapus, atau posting ulang setoran
| Aktor | User pajak / keuangan |
| Deskripsi | User mengelola status setoran dari daftar atau detail |
| Prekondisi | Setoran tersedia; hak akses sesuai aksi |
| Alur utama | 1. User membuka menu aksi baris. 2. Untuk draft: user dapat finalisasi, edit, atau hapus. 3. Untuk final: user dengan hak draft dapat unlock ke draft; user dapat sync/posting ulang. 4. Sistem menjalankan aksi dan memperbarui daftar. |
| Alur negatif | - Jika server menolak hapus/unlock/sync, muncul notifikasi error. |
| Bisnis rule | - Finalisasi mengubah is_tercetak menjadi true.- Unlock membutuhkan hak draft #setoran-pajak. |
| Postkondisi | Status setoran sesuai aksi |
| Trigger | User memilih aksi pada baris setoran |
| Kode FR | FR-07 |
5. Data Flow Diagram
DFD-01 — Alur data setoran pajak
6. Sequence Diagram
SD-01 — UC-01 : Melihat daftar setoran pajak
SD-02 — UC-02 : Memfilter dan mengekspor daftar setoran pajak
SD-03 — UC-03 : Membuat setoran pajak
SD-04 — UC-04 : Mengubah setoran pajak draft
SD-05 — UC-05 : Memfinalisasi, unlock, hapus, atau posting ulang setoran
7. Table Schema
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
GET /invoice-dp | existing | - |
GET /invoice-dp/:id | existing | - |
POST /invoice-dp/bulk-setoran-pajak | existing | - |
PUT /invoice-dp/setoran-pajak/:id | existing | - |
PUT /invoice-dp/:id | existing | - |
PUT /invoice-dp/invoice-only/:id | existing | - |
PUT /invoice-dp/unlock/:id | existing | - |
DELETE /invoice-dp/:id | existing | - |
POST /invoice-dp/sync | existing | - |